<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Document</title>
	</head>
	<body>
		
	</body>
</html>
<script>
	// 通过构造函数创建数组
	// 如果传入的参数只有一个并且是数字, 那么该数组的长度就是该数字, 数组的元素为undefined
	var arr = new Array(5);
	console.log(arr[0]);
	console.log(arr.length);
	// 如果参数不是数字, 或者不止一个参数, 那么这些参数为数组的元素
	var arr1 = new Array(1, 2, 3, 4);
	console.log(arr1);
	var arr2 = new Array("hehe");
	console.log(arr2);

	Array.prototype.add = function() {

		var r = this.reduce(function(pre, cur) {
			return pre + cur;
		});
		// var r = 0;
		// for (var i = 0; i < this.length; i++) {
		// 	r += this[i];
		// }
		return r;

	};

	var numArr = [1, 2, 3, 4, 5];
	console.log(numArr.add());


	String.prototype.ds = function() {
		var r = this.replace(/^\s+|\s+$/g, "");
		r = r.replace(/\s+/, " ");
		return r;
	};
	var str = "     div    span     ";
	console.log(str.ds());


	Date.prototype.getWeek = function() {
		var arr = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
		var day = this.getDay();
		return arr[day];
	};

	// Date对象
	var date = new Date();
	console.dir(date);
	// 获取日期(几号)
	console.log(date.getDate());
	// 设置日期
	// date.setDate(8);
	// 获取一周的第几天, 周日0 - 周六是6
	console.log(date.getDay());

	// 设置
	// date.setDay();

	// 获取年
	console.log(date.getFullYear());

	// 获取月, 从0开始
	console.log(date.getMonth());

	// 获取时
	console.log(date.getHours());

	// 获取分钟
	console.log(date.getMinutes());

	// 获取秒
	console.log(date.getSeconds());

	// 获取毫秒
	console.log(date.getMilliseconds());

	console.log(date.getWeek());


	//  原型链
	// obj继承于Object.prototype
	var obj = {}; // => new Object();

	console.dir(obj);
	// 对象的属性 __proto__ 就是该对象的爹, 也是构造函数的原型
	console.log(obj.__proto__ === Object.prototype);
	console.log(obj.__proto__);
	// 当使用一个对象的属性或者方法时, js会递归查找该对象的__proto__对象有没有改属性和方法, 一直查找到null为止, 这个由__proto__组成的链称为原型链
	console.log(obj.__proto__.__proto__);

	// js中万事万物皆对象
	// num继承于Number.prototype
	var num = new Number(5);
	console.log(num);
	console.log(typeof num.toString());


	console.log(5..toString());
	console.log((5).toString());


	// 继承于String.prototype 继承于 Object.prototype 继承于 null
	Object.prototype.index = "我是爷爷";
	String.prototype.index = "我是爸爸";
	var str = new String();
	str.index = "haha";
	console.log(str.index);










</script>